-- Setup.
return {
  plugins = {
    marks = true, -- shows a list of your marks on ' and `.
    registers = true, -- shows your registers on " in NORMAL or <C-r> in INSERT mode.
    spelling = {
      enabled = true, -- enabling this will show WhichKey when pressing z= to select spelling suggestions.
      suggestions = 20, -- how many suggestions should be shown in the list?.
    },
    -- the presets plugin, adds help for a bunch of default keybindings in Neovim.
    -- No actual key bindings are created.
    presets = {
      operators = true, -- adds help for operators like d, y, ... and registers them for motion / text object completion.
      motions = true, -- adds help for motions.
      text_objects = true, -- help for text objects triggered after entering an operator.
      windows = false, -- default bindings on <c-w> (shown via tinykeymap transitive)..
      nav = true, -- misc bindings to work with windows.
      z = true, -- bindings for folds, spelling and others prefixed with z.
      g = true, -- bindings for prefixed with g.
    },
  },

  -- Add operators that will trigger motion and text object completion
  -- to enable all native operators, set the preset / operators plugin above.
  operators = { gc = 'Comments' },
  key_labels = {
    -- override the label used to display some keys. It doesn't effect WK in any other way..
    -- For example:.
    -- ["<space>"] = "SPC",.
    -- ["<cr>"] = "RET",.
    -- ["<tab>"] = "TAB",.
  },
  icons = {
    breadcrumb = '~>', -- symbol used in the command line area that shows your active key combo.
    separator = '', -- symbol used between a key and it's label.
    group = '', -- symbol prepended to a group.
  },
  popup_mappings = {
    scroll_down = '<c-d>', -- binding to scroll down inside the popup.
    scroll_up = '<c-u>', -- binding to scroll up inside the popup.
  },
  window = {
    border = 'shadow', -- [ none, single, double, shadow ].
    position = 'bottom', -- [ bottom, top ].
    -- extra window margin [ top, right, bottom, left ].
    --margin = { 10, 60, 52, 60 }, -- Top center (errors on low sizes).
    margin = { 0, 1, 1, 1 }, -- extra window margin [ top, right, bottom, left ].
    padding = { 1, 1, 1, 1 }, -- extra window padding [ top, right, bottom, left ].
    winblend = 10, -- pseudo transparency.
  },
  layout = {
    height = { min = 4, max = 25 }, -- min and max height of the columns.
    width = { min = 20, max = 50 }, -- min and max width of the columns.
    spacing = 3, -- spacing between columns.
    align = 'center', -- align columns left, center or right.
  },
  ignore_missing = false, -- enable this to hide mappings for which you didn't specify a label.
  hidden = { '<silent>', '<cmd>', '<Cmd>', '<CR>', 'call', 'lua', '^:', '^ ' }, -- hide mapping boilerplate.
  show_help = true, -- show help message on the command line when the popup is visible.
  triggers = 'auto', -- automatically setup triggers.
  -- triggers = {"<leader>"} -- or specify a list manually.
  triggers_blacklist = {
    -- list of mode / prefixes that should never be hooked by WhichKey.
    -- this is mostly relevant for key maps that start with a native binding.
    -- most people should not need to change this.
    i = { 'j', 'k' },
    v = { 'j', 'k' },
  },
}
